﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using System.IO;
using Skyhook.Core;

//Формат файла
//4 байта - сигнатура SHIC - Skyhook Image Collection
//4 байта - количество изображений
//4 байта х количество изображений - адреса каждого изображения в файле

namespace Skyhook.Resources
{
    public class HotPointsCollection : Resource
    {
        const string FileExtension = ".hot";

        string Name;
        
        int[] HotX = null;
        int[] HotY = null;

        public HotPointsCollection()
        {
            Name = null;
        }

        internal override void LoadFromFile(string assetname)
        {
            string filename = assetname + FileExtension;
            Name = assetname;

            Stream input = StreamFactory.Create(filename);

            int numhots = (int)input.Length / 8;

            HotX = new int[numhots];
            HotY = new int[numhots];
            
            MemoryStream buffer = new MemoryStream((int)input.Length);
            input.CopyTo(buffer);
            input.Close();
            
            buffer.Seek(0,SeekOrigin.Begin);
            BinaryReader reader = new BinaryReader(buffer);

            for (int i = 0; i < numhots; i++)
            {
                HotX[i] = reader.ReadInt32();
                HotY[i] = reader.ReadInt32();
            }
            
            reader.Close();
        }

        public override bool IsEmpty
        {
            get
            {
                return (HotX == null);
            }
        }

        public override string UID
        {
            get
            {
                return Name;
            }
        }

        public Vector2 GetHotPoint(int i)
        {
            return new Vector2(HotX[i],HotY[i]);
        }

        public int HotPointsCount
        {
            get
            {
                return HotX.Length;
            }
        }
    }
}
